/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador.Service.RRHH;

import Controlador.Bean.Almacen.Producto;
import Controlador.Bean.RRHH.DesempenoHistorico;
import Controlador.Bean.RRHH.Personal;
import Controlador.Bean.RRHH.Turno;
import Controlador.Bean.Seguridad.Perfil;
import Controlador.Bean.Seguridad.PerfilxUsuario;
import Controlador.Bean.Seguridad.Usuario;
import Controlador.Service.Almacen.ServicioProducto;
import Controlador.Service.RRHH.*;
import Data.config.SessionFac;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.swing.JProgressBar;
import org.apache.ibatis.session.SqlSession;

/**
 *
 * @author david
 */
public class GestionRRHH {
    
   public static List<Personal> filtrarPersonal(String id) throws Exception{
        ServicioPersonal spersonal = new ServicioPersonal();
        return spersonal.filtrarPersonal(id);
    }
    

    public static void QuitarDeCorrida(ArrayList<String> cadenaQuitar) throws Exception{
      ServicioPersonal spersonal = new ServicioPersonal();
       spersonal.QuitarDeCorrida(cadenaQuitar);
    }
      public static void MeterEnCorrida(ArrayList<String> cadenaMeter) throws Exception{
        ServicioPersonal spersonal = new ServicioPersonal();
       spersonal.MeterEnCorrida(cadenaMeter);
    }
             
       public static List<DesempenoHistorico> obtenerDesempenosHistorico() {
        ServicioPersonal spersonal = new ServicioPersonal();
        return spersonal.seleccionarTodoDesempenos();
    }
   
    
     public static void agregarPersonal(Personal personal) throws Exception{
            ServicioPersonal spersonal = new ServicioPersonal();
            spersonal.guardar(personal);
    }
     
     public static void agregarUsuario(Usuario usuario)   {
            ServicioUsuario susuario = new ServicioUsuario();
            susuario.guardar(usuario);
    }
     
     
     
     
     public static void agregarDesempeno(DesempenoHistorico desempenoHistorico)  {
            ServicioPersonal spersonal = new ServicioPersonal();
            spersonal.guardarDesempeno(desempenoHistorico);
    }
     
       public static int contarFilasDesempeno(String id)  {
            ServicioPersonal spersonal = new ServicioPersonal();
           return spersonal.contarFilas(id);
    }
       
        public static List<DesempenoHistorico> obtenerListaDesempeno(String tipoMaquina, String turno, String id )  {
            ServicioPersonal spersonal = new ServicioPersonal();
           return spersonal.obtenerListaDesempenos(tipoMaquina, turno, id);
    }
     
         
     
      public static void agregarPerfilxUsuario(PerfilxUsuario perfil)  {
            ServicioUsuario susuario = new ServicioUsuario();
            susuario.guardarPerfilxUsuario(perfil);
    }
     
     
     public static void agregarPersonalMasivo(String RutaArchivo,JProgressBar jProgressBar2) throws Exception{
         SqlSession sqlsession= SessionFac.SessionFactory().openSession();
            File f = new File(RutaArchivo);
         jProgressBar2.setValue(0);   
         int porcentaje = 0;
        FileReader fis = new FileReader(f);
        BufferedReader br = new BufferedReader(fis);
        String s = null;
        String SplitBy = ",";
        SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        Date fecha = new Date();
        ArrayList<Personal> ArregloPersonal = new ArrayList();
        ArrayList<DesempenoHistorico> ArregloDesempeno = new ArrayList();
        String idEmpleado = null;
        while((s=br.readLine())!=null){
           String[] datos = s.split(SplitBy);
           if(datos.length != 9){
               jProgressBar2.setValue(100);
               throw new Exception("");
               
           }
           Personal personal = new Personal("",datos[0],datos[1],datos[2],datos[3],datos[4],formatter.parse(datos[5]),datos[6],datos[7],datos[8]); 
           ArregloPersonal.add(personal);
       //    agregarPersonal(personal);
           idEmpleado = SeleccionarMaximoId(idEmpleado,sqlsession);
         //  idEmpleado = Controlador.Service.RRHH.ServicioPersonal.obtenerIdSiguiente(idEmpleado,sqlsession);
           for(int i = 0; i < 8; i++){
               s= br.readLine();
               datos = s.split(SplitBy);
               DesempenoHistorico desepenoHist = new DesempenoHistorico(idEmpleado,datos[1],datos[0], fecha, Double.parseDouble(datos[2]), Double.parseDouble(datos[3]),"1");
               
               
               ArregloDesempeno.add(desepenoHist);
               porcentaje = porcentaje + 10;
               
              
               //agregarDesempeno(desepenoHist);
               
           }
           
           agregarPerMasivo(ArregloPersonal,ArregloDesempeno,sqlsession);
            jProgressBar2.setValue(25+porcentaje%75);
           ArregloPersonal.clear();
           ArregloDesempeno.clear();
          }
        
        sqlsession.close();
      }
     
      public static String obteneridUsuario(String id) {
        ServicioPersonal spersonal = new ServicioPersonal();
        return spersonal.obteneridUsuario(id);
    }
     
       public static List<Personal> obtenerPersonal() {
        ServicioPersonal spersonal = new ServicioPersonal();
        return spersonal.seleccionarTodo();
    }
        public static List<Personal> obtenerObreros(){
        ServicioPersonal spersonal = new ServicioPersonal();
        return spersonal.seleccionarObreros();
    }
       public static List<Personal> obtenerObrerosEstadoCorrida(){
        ServicioPersonal spersonal = new ServicioPersonal();
        return spersonal.seleccionarObrerosEstadoCorrida();
    }
       
       
  
       
       public static List<Personal> filtrarPersonal2(String id, String nombre){
        ServicioPersonal sPersonal = new ServicioPersonal();
        return sPersonal.filtrarPersonal2(id, nombre);
    }
    
    public static void actualizarPersonal(Personal personal){
        ServicioPersonal spersonal = new ServicioPersonal();
        spersonal.actualizar(personal);
    }
    
    
    
 
      public static void actualizarUsuario(Usuario usuario){
        ServicioUsuario susuario = new ServicioUsuario();
            susuario.actualizarUsuario(usuario);
    }
    
        public static void actualizarPerfil(PerfilxUsuario perfil){
        ServicioUsuario susuario = new ServicioUsuario();
            susuario.actualizarPerfil(perfil);
    }
      
       
         
    
     public static void actualizarPersonal2(Personal personal){
        ServicioPersonal spersonal = new ServicioPersonal();
        spersonal.actualizar2(personal);
    }
    
    
     public static void eliminarPersonal(String id){
        ServicioPersonal spersonal = new ServicioPersonal();
        spersonal.eliminar(id);
    }
     
       public static void eliminarPersonal2(String id){
        ServicioPersonal spersonal = new ServicioPersonal();
        spersonal.eliminar2(id);
    }
       
     public static List<Turno> seleccionarTurnos(){
         
        ServicioTurno sturno = new ServicioTurno();
       return sturno.SeleccionarTodo();
        
    }

    private static String SeleccionarMaximoId(String idEmpleado, SqlSession sqlsession) {
        ServicioPersonal spersonal = new ServicioPersonal();
        return spersonal.obtenerIdSiguiente(idEmpleado, sqlsession);
    }

    private static void agregarPerMasivo(ArrayList<Personal> ArregloPersonal, ArrayList<DesempenoHistorico> ArregloDesempeno,SqlSession sqlsession) throws Exception {
         ServicioPersonal spersonal = new ServicioPersonal();
            spersonal.guardarMasivo(ArregloPersonal,ArregloDesempeno,sqlsession);
    }

    public static int obtenerNumHabilitadosCorrida() {
         ServicioPersonal spersonal = new ServicioPersonal();
            return spersonal.numHabilitadoCorrida();
    }

   
}
